/**
 * 
 */
package com.mindbox.viajes.logica;

import java.util.ArrayList;
import java.io.*;

import com.mindbox.viajes.dto.Ciudad;
import com.mindbox.viajes.dto.Evento;
import com.mindbox.viajes.dto.Itinerario;
import com.mindbox.viajes.dto.TipoEvento;
import com.mindbox.viajes.dto.Usuario;
import com.mindbox.viajes.exception.ExceptionCampo;
import com.mindbox.viajes.exception.ExceptionLogica;

/**
 * @author Diana Carolina
 *
 */
public class ControladorItinerario {

	public void obtenerItinerario(Usuario usuario, String rutaArchivo) throws ExceptionLogica, ExceptionCampo{
		ControladorUsuario controlador = new ControladorUsuario();
		ArrayList<Itinerario> itinerario = controlador.getItinerarios(usuario);
		ArrayList<Evento> eventos = new ArrayList();
		for(Itinerario dto: itinerario){
			eventos.addAll( dto.getEventos() );
		}
		this.crearArchivoItinerario(rutaArchivo, eventos);
	}
	public void crearArchivoItinerario(String ruta, ArrayList<Evento> eventos) throws ExceptionLogica{
		try {
			//File file = new File(session.getServletContext().getRealPath("/timeline.xml"));
		    FileWriter fw = new FileWriter(ruta);
		    BufferedWriter bw = new BufferedWriter(fw);
		    PrintWriter salida = new PrintWriter(bw);
		    salida.println("{");
		    salida.println("items: [");
		    for(Evento eventoDto: eventos){
		    	salida.println("{   label: \"" + eventoDto.getNombre() + "\", ");
		    	salida.println("	type: \"" + eventoDto.getTipoEvento() + "\", ");
		    	salida.println("	address: \"" + eventoDto.getDireccion() + "\"");
		    	salida.println("},");
		    }
		    int contador = 0;
		    for(Evento dto: eventos){
		    	if(contador == eventos.size()-1){
		    		salida.println("{ id:'" + dto.getNombre()+ "', addressLatLng: '" + dto.getCoordenadas() + "\'}");
		    	}
		    	else salida.println("{ id:'" + dto.getNombre()+ "', addressLatLng: '" + dto.getCoordenadas() + "\'},");
		    	contador ++;
		    }
		    salida.println("]\n}");
		    salida.close();
		}
		catch(java.io.IOException ioex) {
		  System.out.println("se presento el error: "+ioex.toString());
		}
		catch (Exception e) {
			throw new ExceptionLogica("Error desconocido:" + e.getMessage());
		}
	}
}
